package com.ruoyi.system.domain;

import java.math.BigDecimal;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;

/**
 * 记账本支出类型，定义支出类别及其属性对象 accounting_expense_categories
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@Data
@ApiModel("记账本支出类型，定义支出类别及其属性")
public class AccountingExpenseCategories extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 支出类型表唯一标识ID，主键自增
     */
    @ApiModelProperty("支出类型表唯一标识ID，主键自增")
    private Long id;

    /**
     * 支出类型排序权重（数值越小越靠前），用于前端列表展示顺序
     */
    @Excel(name = "支出类型排序权重", readConverterExp = "数=值越小越靠前")
    @ApiModelProperty("支出类型排序权重（数值越小越靠前），用于前端列表展示顺序")
    private Long sortOrder;

    /**
     * 支出类型分类（fixed=固定支出，variable=可变支出，other=其他支出）：fixed（如房租、员工工资，每月固定金额），variable（如原材料采购、水电费，金额不固定），other（如罚款、捐赠，不常用支出）
     */
    @Excel(name = "支出类型分类", readConverterExp = "f=ixed=固定支出，variable=可变支出，other=其他支出")
    @ApiModelProperty("支出类型分类（fixed=固定支出，variable=可变支出，other=其他支出）：fixed（如房租、员工工资，每月固定金额），variable（如原材料采购、水电费，金额不固定），other（如罚款、捐赠，不常用支出）")
    private String categoryType;

    /**
     * 支出类型名称（如"房租""水电费""原材料采购"）
     */
    @Excel(name = "支出类型名称")
    @ApiModelProperty("支出类型名称")
    private String categoryName;

    /**
     * 支出类型是否启用（0=禁用，1=启用）：禁用后该类型将无法被选择
     */
    @Excel(name = "支出类型是否启用", readConverterExp = "0==禁用，1=启用")
    @ApiModelProperty("支出类型是否启用（0=禁用，1=启用）：禁用后该类型将无法被选择")
    private Integer isActive;

    /**
     * 支出类型图标URL（如"https://example.com/icons/rent.png"），用于前端分类标识
     */
    @Excel(name = "支出类型图标URL")
    @ApiModelProperty("支出类型图标URL（如\"https://example.com/icons/rent.png\"），用于前端分类标识")
    private String iconUrl;

    /**
     * 是否启用预算控制（0=关闭，1=开启）：开启后需设置月度预算金额
     */
    @Excel(name = "是否启用预算控制", readConverterExp = "0==关闭，1=开启")
    @ApiModelProperty("是否启用预算控制（0=关闭，1=开启）：开启后需设置月度预算金额")
    private Integer budgetControl;

    /**
     * 月度预算金额（如5000.00），仅在budget_control=1时生效
     */
    @Excel(name = "月度预算金额", readConverterExp = "如=5000.00")
    @ApiModelProperty("月度预算金额（如5000.00），仅在budget_control=1时生效")
    private BigDecimal monthlyBudget;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    @ApiModelProperty("手机号")
    private String phone;
}